From: Florian Müllner Date: Sat, 21 Feb 2015 08:05:58 +0000 (+0100) Subject: messageTray: Hide from picks during DND operations X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~1631 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=d56411729b8f41738b6d54a00ebe944f6f85c76f;p=gnome-shell.git messageTray: Hide from picks during DND operations As it is impossible to interact with notification banners while a DND operation is ongoing, we can temporarily hide the banner container from picks so that DND works as expected even while a banner is showing. https://bugzilla.gnome.org/show_bug.cgi?id=744912 --- diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 84408f829..f4b4f8876 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -1555,6 +1555,25 @@ const MessageTray = new Lang.Class({ Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated)); + Main.overview.connect('window-drag-begin', + Lang.bind(this, this._onDragBegin)); + Main.overview.connect('window-drag-cancelled', + Lang.bind(this, this._onDragEnd)); + Main.overview.connect('window-drag-end', + Lang.bind(this, this._onDragEnd)); + + Main.overview.connect('item-drag-begin', + Lang.bind(this, this._onDragBegin)); + Main.overview.connect('item-drag-cancelled', + Lang.bind(this, this._onDragEnd)); + Main.overview.connect('item-drag-end', + Lang.bind(this, this._onDragEnd)); + + Main.xdndHandler.connect('drag-begin', + Lang.bind(this, this._onDragBegin)); + Main.xdndHandler.connect('drag-end', + Lang.bind(this, this._onDragEnd)); + Main.wm.addKeybinding('focus-active-notification', new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), Meta.KeyBindingFlags.NONE, @@ -1571,6 +1590,14 @@ const MessageTray = new Lang.Class({ this._updateState(); }, + _onDragBegin: function() { + Shell.util_set_hidden_from_pick(this.actor, true); + }, + + _onDragEnd: function() { + Shell.util_set_hidden_from_pick(this.actor, false); + }, + _onNotificationKeyRelease: function(actor, event) { if (event.get_key_symbol() == Clutter.KEY_Escape && event.get_state() == 0) { this._expireNotification();